home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / util / urlprotocol.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  5KB  |  135 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __all__ = 'isRegistered register unregister'.split()
  5. import platform
  6. from traceback import print_exc
  7. from warnings import warn
  8. platform = platform.system().lower()
  9. platform = {
  10.     'microsoft': 'windows',
  11.     '4nt': 'windows',
  12.     'darwin': 'darwin',
  13.     'linux': 'linux' }.get(platform, 'windows')
  14.  
  15. def attrget(obj, attr):
  16.     
  17.     try:
  18.         return obj[attr]
  19.     except TypeError:
  20.         return obj.name
  21.  
  22.  
  23.  
  24. def platform_call(name, *a, **k):
  25.     funcname = name + '_' + platform
  26.     
  27.     try:
  28.         func = globals()[funcname]
  29.     except KeyError:
  30.         warn('platform %s not implemented (%s)' % (platform, funcname))
  31.  
  32.     return func(*a, **k)
  33.  
  34.  
  35. def isRegistered(urlprotocol, system = True):
  36.     return platform_call('isDefault', urlprotocol, system = system)
  37.  
  38.  
  39. def get(protocol_name, system = True):
  40.     return platform_call('get', protocol_name, system = system)
  41.  
  42.  
  43. def register(urlprotocol, system = True):
  44.     return platform_call('register', urlprotocol, system = system)
  45.  
  46.  
  47. def unregister(protocol_or_name, system = True):
  48.     name = None if isinstance(protocol_or_name, basestring) else getattr(protocol_or_name, 'name', protocol_or_name['name'])
  49.     return platform_call('unregister', name, system = system)
  50.  
  51.  
  52. def _init_darwin():
  53.     pass
  54.  
  55.  
  56. def _init_windows():
  57.     global reg
  58.     import _winreg as reg
  59.  
  60.  
  61. def get_windows(protocol_name, system = True):
  62.     fuzzydecode = fuzzydecode
  63.     import util
  64.     key = reg.OpenKey(basekey(system), '%s\\shell\\open\\command' % protocol_name)
  65.     val = reg.EnumValue(key, 0)[1]
  66.     if isinstance(val, str):
  67.         val = fuzzydecode(reg.EnumValue(key, 0)[1], 'utf-16-be')
  68.     
  69.     return val
  70.  
  71.  
  72. def urlkey(protocolname, system = False, write = False):
  73.     
  74.     try:
  75.         if system:
  76.             return None(reg.OpenKey, reg.HKEY_CLASSES_ROOT, '%s' % protocolname, 0 if write else reg.KEY_READ)
  77.         elif write:
  78.             pass
  79.         
  80.         return reg.OpenKey(reg.HKEY_CURRENT_USER, 'Software\\Classes\\%s' % protocolname, 0, reg.KEY_READ)
  81.     except reg.error:
  82.         return None
  83.  
  84.  
  85.  
  86. def basekey(system = False):
  87.     if system:
  88.         return reg.OpenKey(reg.HKEY_CLASSES_ROOT, '')
  89.     else:
  90.         return reg.OpenKey(reg.HKEY_CURRENT_USER, 'Software\\Classes')
  91.  
  92.  
  93. def keyToObj(.0):
  94.     (obj, objtype) = .0
  95.     if objtype in reg.REG_NONE:
  96.         return None
  97.     elif objtype in (reg.REG_SZ, reg.REG_EXPAND_SZ, reg.REG_RESOURCE_LIST, reg.REG_LINK, reg.REG_BINARY, reg.REG_DWORD, reg.REG_DWORD_LITTLE_ENDIAN, reg.REG_DWORD_BIG_ENDIAN, reg.REG_MULTI_SZ):
  98.         return obj
  99.     
  100.     raise NotImplementedError, 'Registry type 0x%08X not supported' % (objtype,)
  101.  
  102.  
  103. def register_microsoft(urlprotocol, system = True):
  104.     protocol = attrget(urlprotocol, 'protocol')
  105.     key = urlkey(protocol, system)
  106.     if not key:
  107.         reg.CreateKey(basekey(system), 'Software\\Classes\\%s' % protocol)
  108.     
  109.  
  110.  
  111. def isRegistered_microsoft(urlprotocol, system = True):
  112.     name = attrget(urlprotocol, 'protocol')
  113.     key = urlkey(name, system)
  114.     if not key:
  115.         return False
  116.     
  117.  
  118.  
  119. def _init_darwin():
  120.     pass
  121.  
  122.  
  123. def _init_linux():
  124.     pass
  125.  
  126.  
  127. try:
  128.     platform_call('_init')
  129. except Exception:
  130.     print_exc()
  131.  
  132. if __name__ == '__main__':
  133.     print get('mailto')
  134.  
  135.